package com.company.ljh.medium;
/**
 * 167.给你一个下标从 1 开始的整数数组 numbers ，该数组已按 非递减顺序排列  ，请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ，则 1 <= index1 < index2 <= numbers.length 。
 *
 * 以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。
 *
 * 你可以假设每个输入 只对应唯一的答案 ，而且你 不可以 重复使用相同的元素。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

import java.util.HashSet;

/**
 * @description:
 * @projectName:leet_code
 * @see:com.company.ljh.medium
 * @author:ljh
 * @createTime:2022/5/29 21:27
 * @version:1.0
 */
public class 两数之和II输入有序数组 {
    /**双指针法 n
     * 维护头和尾指针，大于则尾指针-1，小于则头指针+1
     * 且不可能出现漏掉正确答案的情况
     * */
    public int[] twoSum(int[] numbers, int target) {

        int resultArray[] = new int[2];
        int start =0;
        int end = numbers.length-1;
        while(numbers[start]+numbers[end] != target){
            if(numbers[start]+numbers[end] < target){
                start++;
            }else{
                end--;
            }
        }
        resultArray[0] = start+1;
        resultArray[1] = end+1;
        return resultArray;
    }
}
